SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROC [dbo].[SP_TXMVTO_CNTB_I13]        
/*---------------------------------------------------------------------*/            
/*----- Empresa          : OFISIS S.A.                             -----*/            
/*----- Cliente          : OFISIS S.A.                            -----*/            
/*----- Sistema          : Contabilidad                           -----*/            
/*----- Modulo           : Administracion                         -----*/             
/*----- Programa         : Apertura Anual                         -----*/            
/*----- Nombre           : SP_TXMVTO_CNTB_I13                   -----*/            
/*----- Script           : TXMVTO_CNTB                            -----*/            
/*----- Desarrollado     : Franco Gamboni Koifman                 -----*/            
/*----- Fecha            : 15/10/1996                             -----*/            
/*----- Base de Datos    : MS SQL Server                          -----*/            
/*----- Version BD       : 6.5                                  -----*/            
/*----- Invoca a SP      :                                        -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Modificado 1 por : percy garcia                           -----*/            
/*----- Fecha Modifica   : 05/06/2004                             -----*/            
/*----- Detalle Modifica : usuario creacion y modif               -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/          
/*----- Modificado 3 por : PDGV                                   -----*/          
/*----- Fecha Modifica   : 20/01/2005                             -----*/          
/*----- Detalle Modifica : APERTURA POR UNIDAD                    -----*/          
/*---------------------------------------------------------------------*/          
/*---------------------------------------------------------------------*/            
/*----- Comentarios      : Todas las cuentas con auxiliares y     -----*/            
/*-----                    que tengan documentos con saldos       -----*/            
/*---------------------------------------------------------------------*/            
/*---------------------------------------------------------------------*/            
/*----- Drop Proc SP_TXMVTO_CNTB_I13                              -----*/            
/*----- Grant Execute On SP_TXMVTO_CNTB_I13 To PUBLIC             -----*/            
/*----- SP_TXMVTO_CNTB_I13                                        -----*/            
/*---------------------------------------------------------------------*/            
@ISCO_EMPR  TD_VC_002,            
@ISCO_USUA          TD_VC_008,  
@IDFE_USUA          TD_DT_001,  
@INNU_CNTB_EMPR  TD_IN_001,            
@INNU_ANNO_CIER  TD_IN_004_ANNO,            
@INNU_MESE_CIER  TD_IN_002_MESE,            
@INNU_ANNO_APER  TD_IN_004_ANNO,            
@INNU_MESE_APER  TD_IN_002_MESE,            
@ISCO_UNID_CNTB         TD_VC_003,            
@ISCO_UNID_FILT  TD_VC_003,       
@ISCO_OPRC_CNTB         TD_VC_003,            
@ISNU_ASTO  TD_VC_010,            
@INNU_SECU  TD_IN_001,            
@INNU_SIZE              TD_IN_001,        
@IDFE_ASTO_CNTB         TD_DT_001,       
@ISTI_FILT       TD_VC_001, -- 'T' TODAS LAS UNID. 'P' FILTRO POR UNIDAD       
@ISTI_GENE_ASTO  TD_VC_003  -- 'ING'  UNIDAD INGRESADA 'ORI' UNIDAD ORIGEN        
--WITH ENCRYPTION
As             
Declare             
 @CSCO_UNID_CNTB       TD_VC_003,              
 @VSCO_UNID_CNTB       TD_VC_003,       
 @CSCO_CNTA_EMPR  TD_VC_020_CNTA,            
 @CNIM_ORIG_SALD  TD_NU_016_004,            
 @CNIM_CNTB_SALD  TD_NU_016_004,            
 @VNFA_CAMB       TD_NU_015_006,            
 @CSTI_DOCU       TD_VC_003,            
 @CSNU_DOCU       TD_VC_020,            
 @CDFE_DOCU       TD_DT_001,             @CDFE_DOCU_VENC  TD_DT_001,            
 @CSTI_AUXI_EMPR  TD_VC_001,            
 @CSCO_AUXI_EMPR  TD_VC_020,            
 @VSTI_OPER       TD_VC_003,      
 @CSTI_MONE       TD_VC_003,            
 @CSTI_CAMB       TD_VC_003,            
 @VSCO_MONE_CNTB  TD_VC_003,            
 @VNNU_SECU       TD_IN_002,    
 @VSCO_UNID_ORIG       TD_VC_003,              
 @VSCO_UNID_EVAL       TD_VC_003,
 @CSCO_ORDE_SERV   TD_VC_020
    
If @ISTI_GENE_ASTO = 'ING'          
 Begin             
Declare CU_TXMVTO_CNTB_I13_1 Cursor            
For             
Select NULL, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU,             
       min(t1.FE_DOCU), min(t1.FE_DOCU_VENC), max(t2.CO_MONE),            
       Isnull(SUM((ROUND(((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_ORIG, 0)),2) -            
       ROUND(((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_ORIG, 0)),2))), 0),            
       Isnull(SUM((ROUND( ((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_CNTB, 0)),2)  -            
       ROUND(((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_CNTB, 0)),2))), 0), MAX(t1.CO_ORDE_SERV)
From TXMVTO_CNTB t1, TMPLAN_EMPR t2            
Where  t1.CO_EMPR = @ISCO_EMPR          
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR         
 And ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t1.CO_UNID_CNTB = @ISCO_UNID_FILT))       
 And t1.NU_ANNO  = @INNU_ANNO_CIER      
 And t1.NU_MESE  < @INNU_MESE_CIER           
 And t1.SI_MVTO_CNTB = 'APR'              
 And Datalength(Rtrim(t2.CO_CNTA_EMPR)) = @INNU_SIZE       
 And Substring(t2.CO_CNTA_EMPR,1,2) < '59'        
 And t2.ST_CNTA_CTES = 'DOC'          
 And t1.CO_EMPR = t2.CO_EMPR          
 And t1.CO_CNTA_EMPR = t2.CO_CNTA_EMPR                     
 And t2.NU_ANNO = 9999                    
Group By t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU            
Order By t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU            
End    
    
If @ISTI_GENE_ASTO = 'ORI'          
 Begin             
Declare CU_TXMVTO_CNTB_I13_1 Cursor            
For             
Select t1.CO_UNID_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU,             
       min(t1.FE_DOCU), min(t1.FE_DOCU_VENC), max(t2.CO_MONE),            
       Isnull(SUM((ROUND(((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_ORIG, 0)),2) -            
       ROUND(((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_ORIG, 0)),2))), 0),            
       Isnull(SUM((ROUND( ((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_CNTB, 0)),2)  -            
       ROUND(((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_CNTB, 0)),2))), 0), MAX(t1.CO_ORDE_SERV)
From TXMVTO_CNTB t1, TMPLAN_EMPR t2            
Where  t1.CO_EMPR = @ISCO_EMPR          
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR         
 And ((@ISTI_FILT = 'T') Or (@ISTI_FILT = 'P' And t1.CO_UNID_CNTB = @ISCO_UNID_FILT))       
 And t1.NU_ANNO  = @INNU_ANNO_CIER      
 And t1.NU_MESE  < @INNU_MESE_CIER           
 And t1.SI_MVTO_CNTB = 'APR'              
 And Datalength(Rtrim(t2.CO_CNTA_EMPR)) = @INNU_SIZE       
 And Substring(t2.CO_CNTA_EMPR,1,2) < '59'        
 And t2.ST_CNTA_CTES = 'DOC'          
 And t1.CO_EMPR = t2.CO_EMPR          
 And t1.CO_CNTA_EMPR = t2.CO_CNTA_EMPR                     
 And t2.NU_ANNO = 9999                    
Group By t1.CO_UNID_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU            
Order By t1.CO_UNID_CNTB, t1.CO_CNTA_EMPR, t1.TI_AUXI_EMPR, t1.CO_AUXI_EMPR, t1.TI_DOCU, t1.NU_DOCU            
End    
            
 Select @VSCO_MONE_CNTB = CO_MONE from TTCNTB_EMPR            
 Where CO_EMPR = @ISCO_EMPR            
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR            
             
 Select @CNIM_ORIG_SALD = 0            
 Select @CNIM_CNTB_SALD = 0            
 Select @VNFA_CAMB      = 0            
 Select @VNNU_SECU = @INNU_SECU            
            
Open CU_TXMVTO_CNTB_I13_1            
Fetch CU_TXMVTO_CNTB_I13_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
      @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CDFE_DOCU_VENC, @CSTI_MONE, @CNIM_ORIG_SALD, @CNIM_CNTB_SALD, @CSCO_ORDE_SERV
            
 While @@Fetch_status = 0            
             
  Begin         
    --- SI INGRESA UNA UNIDAD DONDE GRABAR ASTO      
    If IsNull(Rtrim(@ISCO_UNID_CNTB), '') != ''      
      Begin         
       Select @VSCO_UNID_CNTB = @ISCO_UNID_CNTB        
      End         
    Else         
      Begin         
       Select @VSCO_UNID_CNTB = @CSCO_UNID_CNTB        
      End       
  
    --- SETEA UNIDAD ORIGEN      
    If @ISTI_GENE_ASTO = 'ORI'          
      Begin           
         Select @VSCO_UNID_ORIG = @CSCO_UNID_CNTB         
    
         If @VSCO_UNID_EVAL IS NULL Or @CSCO_UNID_CNTB != @VSCO_UNID_EVAL    
         Begin     
         Select @VNNU_SECU = IsNull(Max(NU_SECU), 0) + 1      
         From TXMVTO_CNTB       
         Where CO_EMPR = @ISCO_EMPR       
         And NU_CNTB_EMPR = @INNU_CNTB_EMPR       
         And CO_UNID_CNTB = @CSCO_UNID_CNTB       
         And CO_OPRC_CNTB = @ISCO_OPRC_CNTB       
         And NU_ANNO = @INNU_ANNO_APER       
         And NU_MESE = @INNU_MESE_APER              
    
         Select @VSCO_UNID_EVAL = @CSCO_UNID_CNTB    
         End     
    
      End       
       
   If @CNIM_ORIG_SALD IS NULL            
     Select @CNIM_ORIG_SALD = 0.00            
   If @CNIM_CNTB_SALD IS NULL            
     Select @CNIM_CNTB_SALD = 0.00            
            
   If @CNIM_ORIG_SALD != 0.00 Or @CNIM_CNTB_SALD != 0.00            
     Begin            
      If @CSTI_MONE != @VSCO_MONE_CNTB            
       Begin            
         If @CNIM_ORIG_SALD != 0.00            
           Select @VNFA_CAMB = Round(@CNIM_CNTB_SALD / @CNIM_ORIG_SALD,3)            
         Else            
           Begin             
             Select @VNFA_CAMB = 1.00            
           End             
       End            
      Else            
       Begin            
          Select @VNFA_CAMB = 1.00            
          Select @CNIM_ORIG_SALD = @CNIM_CNTB_SALD            
       End            
            
      If @CNIM_ORIG_SALD > 0.00  
        If @CNIM_CNTB_SALD > 0.00  
          Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/          
        Else  
          Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/            
      Else  
        If @CNIM_CNTB_SALD <  0.00  
          Select @VSTI_OPER = 'ABO'  /*--- Si es negativo se debe poner positivo ---*/            
        Else  
          Select @VSTI_OPER = 'CAR'  /*--- Si es positivo se debe poner negativo ---*/            
            
      Insert Into TXMVTO_CNTB            
  (CO_EMPR,NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,            
    NU_MESE,NU_ASTO,NU_SECU,FE_ASTO_CNTB,CO_CNTA_EMPR,TI_AUXI_EMPR,            
    CO_AUXI_EMPR,TI_DOCU,NU_DOCU,FE_DOCU,FE_DOCU_VENC,TI_CAMB,CO_MONE,FA_CAMB,FA_CAMB_DIAR,            
    TI_OPER,IM_MVTO_ORIG,IM_MVTO_CNTB,DE_GLOS, TI_DOCU_REFE,NU_DOCU_REFE,FE_DOCU_REFE,            
    NO_GIRA,CO_ORDE_SERV,SI_MVTO_CNTB,CO_UNID_ORIG,            
    CO_OPRC_ORIG,NU_ASTO_ORIG,ST_OTRS, ST_GEST, ST_REDO , CO_USUA_MODI, FE_USUA_MODI, CO_USUA_CREA, FE_USUA_CREA)            
      Values            
 	(@ISCO_EMPR, @INNU_CNTB_EMPR, @VSCO_UNID_CNTB, @ISCO_OPRC_CNTB,             
  	 @INNU_ANNO_APER, @INNU_MESE_APER, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB,             
         @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CDFE_DOCU_VENC,            
         'PAC',@CSTI_MONE, Abs(@VNFA_CAMB), Abs(@VNFA_CAMB), @VSTI_OPER, Abs(@CNIM_ORIG_SALD),            
  	 Abs(@CNIM_CNTB_SALD), 'ASIENTO DE APERTURA', NULL, NULL, NULL, NULL, @CSCO_ORDE_SERV, 'APR',     
  	 @VSCO_UNID_ORIG, NULL, NULL,     
 	 NULL, 'N', 'N', @ISCO_USUA , @IDFE_USUA, @ISCO_USUA,@IDFE_USUA )            
               
        Select @VNNU_SECU = @VNNU_SECU + 1            
        Select @CNIM_ORIG_SALD = 0            
         
        Select @CNIM_CNTB_SALD = 0            
        Select @VNFA_CAMB      = 0            
    
      End            
      Fetch CU_TXMVTO_CNTB_I13_1 Into @CSCO_UNID_CNTB, @CSCO_CNTA_EMPR, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,
            @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CDFE_DOCU_VENC, @CSTI_MONE, @CNIM_ORIG_SALD, @CNIM_CNTB_SALD, @CSCO_ORDE_SERV
  End            
                
Close CU_TXMVTO_CNTB_I13_1            
Deallocate CU_TXMVTO_CNTB_I13_1            
            
/*If @VNNU_SECU >  1            
  Update TCFECH_PROC            
    Set NU_ULTI_ASTO = Convert(Smallint, @ISNU_ASTO)            
  Where CO_EMPR      = @ISCO_EMPR            
    And NU_CNTB_EMPR = @INNU_CNTB_EMPR            
    And CO_UNID_CNTB = @ISCO_UNID_CNTB      
    And CO_OPRC_CNTB = @ISCO_OPRC_CNTB            
    And NU_ANNO      = @INNU_ANNO_APER            
    And NU_MESE      = @INNU_MESE_APER        */    
      
Return            
            
/*--------------------------------- Fin ----------------------------------*/            
  
  




GO
